package com.ethink.warehouse.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ethink.warehouse.api.info.MateInventoryTypeChangeLogInfo;
import com.ethink.warehouse.api.info.MateInventoryTypeChangeLogModeInfo;
import com.ethink.warehouse.api.request.MateInventoryTypeChangeLogAddRequest;
import com.ethink.warehouse.api.request.MateInventoryTypeChangeLogQueryModeRequest;
import com.ethink.warehouse.api.request.MateInventoryTypeChangeLogQueryRequest;
import com.ethink.warehouse.api.request.MateInventoryTypeChangeLogUpdateRequest;
import com.ethink.warehouse.api.response.MateInventoryTypeChangeLogAddResponse;
import com.ethink.warehouse.api.response.MateInventoryTypeChangeLogDeleteResponse;
import com.ethink.warehouse.api.response.MateInventoryTypeChangeLogGetDetailResponse;
import com.ethink.warehouse.api.response.MateInventoryTypeChangeLogUpdateResponse;
import java.util.List;

/**
 * 库存状态变更 Service接口
 *
 * @author default
 * @date 2023-01-14
 */
public interface MateInventoryTypeChangeLogService {

    /**
     * 分页查询
     *
     * @param request
     * @return
     */
    Page<MateInventoryTypeChangeLogInfo> queryMateInventoryTypeChangeLog(MateInventoryTypeChangeLogQueryRequest request);

    /**
     * 查询详情
     *
     * @param mateInventoryTypeChangeLogId
     * @return
     */
    MateInventoryTypeChangeLogGetDetailResponse getMateInventoryTypeChangeLogById(Long mateInventoryTypeChangeLogId);

    /**
     * 查询列表
     *
     * @param request
     * @return
     */
    List<MateInventoryTypeChangeLogInfo> listMateInventoryTypeChangeLog(MateInventoryTypeChangeLogQueryRequest request);

    /**
     * 新增
     *
     * @param request
     * @return
     */
    MateInventoryTypeChangeLogAddResponse addMateInventoryTypeChangeLog(MateInventoryTypeChangeLogAddRequest request);

    /**
     * 修改
     *
     * @param request
     * @return
     */
    MateInventoryTypeChangeLogUpdateResponse updateMateInventoryTypeChangeLog(MateInventoryTypeChangeLogUpdateRequest request);

    /**
     * 删除
     *
     * @param mateInventoryTypeChangeLogId
     * @return
     */
    MateInventoryTypeChangeLogDeleteResponse deleteMateInventoryTypeChangeLog(Long mateInventoryTypeChangeLogId);

    void setOrderStatus(Long id, Integer orderStatus);

    Page<MateInventoryTypeChangeLogModeInfo> queryMateInventoryTypeChangeLogMode(MateInventoryTypeChangeLogQueryModeRequest request);

}